
#include "typedefs.h"
#include "mesh.h"
#include "uskeleton.h"

/// This file defines drawing functions using the OpenGL API

/// Renders a surface model using vertex buffers (very efficient)
void glDrawModel(Mesh *model, int meshrendermode_mask=SMOOTH);
/// Draws the faces of the model for selection purposes
void glDrawModelFaces(Mesh *model);
/// Draws the vertices of the model ...
void glDrawModelVerticesFront(Mesh *model, const Vector3 &eye);
/// Draws the faces of the model ...
void glDrawModelFacesFront(Mesh *model, const Vector3 &eye);

void glDrawSkeleton(USkeleton *s);

void glDrawSkeletonJoints(USkeleton *s);
void glDrawSkeletonBones(USkeleton *s);

/// Draws a 3D cursor
void drawCursor3D(const Point3 &c, Number sf);

void glDrawVertexSkinning(Mesh *model, USkeleton *skeleton, int idvertex, bool usingbones);

/// Renders rigging/skining data
void glDrawRiggingSkinning(Mesh *m, USkeleton *s, int mode_mask, bool usingbones);
/// Renders rigging/skining data
void glDrawRiggingSkinning(Mesh *m, USkeleton *s, int mode_mask, bool usingbones);
/// Render the mesh visualizing the rigging results
void glDrawRigging(Mesh *model);
void glDrawRiggingEdges(Mesh *m, USkeleton *s, bool usingbones);
/// Render the mesh visualizing the skinning results
void glDrawSkinning(Mesh *model);

/// Generates a table with several rgb colors
void generateColors();

